這篇續上篇【Day11】WannaCry逆向 - 靜態分析(三)
來看呼叫的這些函數有哪些功能,猜測說這個勒索軟體可能會做的事情
(不會全列,只列看得出功能的)
而有些函數後面會加上A or W or EX之類的
通常跟文件、記憶體、硬體操作有關
檔案處理
ReadFile : 讀取指定檔案
GetFileSize : 得到檔案大小
CreateFile : 創建檔案
MoveFile : 移動檔案
Resource處理
SizeofResource : 與.rsrc相關
LoadResource : 載入resource
FindResource : 找到resource位址
lockresource
Process and Thread相關
GetCurrentThreadId
TerminateThread : 停止線程,可能導致deadlock
ExitProcess : 終止進程
GetStartupInfo : 得到當前process的環境
記憶體相關
LocalFree : 釋放記憶體
LocalAlloc : 申請記憶體
時間相關
QueryPerformanceFrequency : 回傳時間頻率
QueryPerformanceCounter : 計時
GetTickCount : 回傳從開機到現在經過多少毫秒
Sleep : 暫停程式
其他
GetProcAddress : 回傳指定dll中的函數位址
GetModuleHandle : 回傳指定模塊的Handle
GetModuleFileName : 回傳指定模塊的路徑
CloseHandle : 關閉Handle
通常安全性、註冊表、事件紀錄有關
詳細可看參考資料中的「Windows服務編程之基本結構」
服務相關
StartServiceCtrlDispatcher : 將服務連接到SCM
RegisterServiceCtrlHandler : 接收服務控制處理的指針
ChangeServiceConfig2 : 修改可選的服務配置參數
SetServiceStatus : 更新服務狀態
OpenSCManager : 打開SCM,獲取SCM handle
CreateService : 創建服務
CloseServiceHandle : 關閉handle
StartService : 啟動服務
加密相關
CryptGenRandom : 生成隨機數
CryptAcquireContext : 獲得一個加密上下文的handle
(source : https://wenku.csdn.net/answer/88dc27fc3a0942119488cbae17f2c6e6?ydreferer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8%3D)
提供與 POSIX 標準相容的 Socket API,主要與 TCP/IP 網路第 3、4 層的連線有關
這裡的函數看的都是與網路有關的,故不列出
引用的兩個為C++的function
也是跟網路相關的
為 Internet Extensions for Win32。提供TCP/IP 網路第7層,HTTP、HTTPS、FTP 與 GOPHER 等協定的連線 API
關於Ws2_32 & Wininet的部分可查看參考資料中
「分析惡意程式呼叫的作業系統網路API」的部分
為C的函數庫,裡面都是C的語法
猜測這是一隻具有網路通訊功能、加密與創建檔案、會有計時、修改服務的惡意程式
kernal32
惡意代碼分析
Advapi32
Windows服務編程之基本結構
分析惡意程式呼叫的作業系統網路API